﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;

namespace DELVE_GAME.ViewStructure
{
    abstract class ViewComponent : IDrawable, ICollider, IMouseEventReceiver, IKeyboardEventReceiver
    {
        protected int x;
        protected int y;
        protected int offsetX;
        protected int offsetY;
        protected int width;
        protected int height;
        public Boolean visible = true;

        public virtual void update(){}

        public virtual void draw(SpriteBatch sb)
        {
            throw (new NotImplementedException());
        }

        public virtual bool checkCollision(int x, int y)
        {
            throw (new NotImplementedException());
        }

        public virtual void mouseOver(int x, int y)
        {
            throw (new NotImplementedException());
        }

        public virtual void mousePressed(int x, int y)
        {
            throw (new NotImplementedException());
        }

        public virtual void mouseReleased(int x, int y)
        {
            throw (new NotImplementedException());
        }

        public virtual void keyPressed(Keys key)
        {
            throw new NotImplementedException();
        }

        public virtual void keyReleased(Keys key)
        {
            throw new NotImplementedException();
        }

        public virtual void setLocation( int x, int y )
        {
            this.x = x;
            this.y = y;
        }

        public virtual void setOffset(int x, int y)
        {
            offsetX = x;
            offsetY = y;
        }

        public virtual void setBounds(int width, int height)
        {
            this.width = width;
            this.height = height;
        }

        public virtual int getHeight()
        {
            return height;
        }

        public virtual int getWidth()
        {
            return width;
        }
    }
}
